#include <cstdio>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>

void* my_malloc(size_t size)
{
    void *ptr=mmap(NULL,size,PROT_READ|PROT_WRITE,MAP_ANONYMOUS|MAP_PRIVATE,-1,0);
    if(ptr==MAP_FAILED)
    {
        perror("mmap");
        exit(EXIT_FAILURE);
    }
    return ptr;
}

void my_free(void*ptr,size_t size)
{
    if(munmap(ptr,size)==-1)
    {
        perror("munmap");
        exit(EXIT_FAILURE);
    }
}

int main()
{
    size_t size=1024;
    char*ptr=(char*)my_malloc(size);

    printf("Allocated memory at address: %p\n", ptr);

    //  memset(ptr, 'A', size);
    for(char ch='a';ch<='z';ch++)
    {
        ptr[ch-'a']=ch;
    }

    // for(int i = 0; i < size; i++)
    // {
    //     printf("%c ", ptr[i]);
    //     fflush(stdout);
    //     sleep(1);
    // }
    std::cout<<ptr<<std::endl;

    // 释放分配的内存
    my_free(ptr, size);
}